package download.itydl.com.sinlethread.db;

import java.util.List;

import download.itydl.com.sinlethread.bean.ThreadInfo;

/**
 * 数据库操作接口
 * 此接口适用于 多线程 下载的时候
 *
 * @author howard
 */
public interface ThreadDao {

    /**
     * 增加线程信息 -- 断点续传，当前线程下载进度等等信息存储到数据库
     * 一个ThreadInfo对应表的一行数据
     *
     * @param threadInfo
     */
    void insertThread(ThreadInfo threadInfo);

    /**
     * 删除线程信息
     * @param url
     * @param thread_id
     */
    void deletThread(String url, int thread_id);

    /**
     * 更新线程信息，主要是更新进度
     * @param url
     * @param thread_id
     * @param progress
     */
    void updateThread(String url, int thread_id, long progress);

    /**
     * 查询文件的 线程信息。多线程下载时候，一个文件对应多个线程，每个线程封装成线程信息类（ThreadInfo），代表数据库表的一行数据，多个线程
     * 就有多行信息，每行信息记录当前线程下载的各种信息
     * 单线程List大小为1，多线程下载的时候，大小为n。
     * @param url  url可以代表文件 一个文件一个url对应关系。一个url对应一个文件，多线程时就对应多个线程信息 ： list>1;
     * @return
     */
    List<ThreadInfo> getThread(String url);

    /**
     * 判断是否存在
     *
     * @param url       地址
     * @param thread_id id
     * @return 是否存在
     */
    boolean isExists(String url, int thread_id);
}
